﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.OleDb;

namespace TanPhu
{
    public partial class TrangChu : System.Web.UI.Page
    {
        private static string _maDichVu = "";
        private static string _ketQuaQuan = "";
        private static string _ketQuaDuong = "";
        private static string _ketQuaPhuong = "";

        protected void PageLoad(object sender, EventArgs e)
        {
            //BindDropDownListDichVu();
        }

        #region Bind Drop down list Dịch vụ
        //private void BindDropDownListDichVu()
        //{
        //    var dataTable = new DataTable();
        //    var connectionString = new OleDbConnection(GetConnectionString());
        //    try
        //    {
        //        connectionString.Open();
        //        _statement = "SELECT * FROM DICHVU";
        //        var command = new OleDbCommand(_statement, connectionString);
        //        var dataAdapter = new OleDbDataAdapter(command);
        //        dataAdapter.Fill(dataTable);
        //        if(dataTable.Rows.Count > 0)
        //        {
        //            DropDownList1.DataSource = dataTable;
        //            DropDownList1.DataTextField = "TENDICHVU";
        //            DropDownList1.DataValueField = "MADICHVU";
        //            DropDownList1.DataBind();
        //        }
        //    }
        //    catch (OleDbException ex)
        //    {
        //        var message = "Error : ";
        //        message += ex.Message;
        //        throw new Exception(message);
        //    }
        //    finally
        //    {
        //        connectionString.Close();
        //    }
        //}
        #endregion

        #region Connection String
        // Kết nối tới CSDL
        private static string GetConnectionString()
        {
            return System.Configuration.ConfigurationManager.ConnectionStrings["Database"].ConnectionString;
        }
        #endregion

        #region Tìm kiếm dịch vụ theo quận
        // Hàm tìm kiếm mã quận theo từ khóa
        public static string TimQuan(string tuKhoa)
        {
            var kq = "";
            var dataTable = new DataTable();
            var connectionString = new OleDbConnection(GetConnectionString());
            try
            {
                connectionString.Open();
                var statement = "SELECT MAQUANHUYEN FROM TUKHOAQUANHUYEN WHERE TUKHOAQUANHUYEN ='" +
                                tuKhoa + "'";
                var command = new OleDbCommand(statement, connectionString);
                var dataAdapter = new OleDbDataAdapter(command);
                dataAdapter.Fill(dataTable);
                if (dataTable.Rows.Count > 0)
                {
                    var dataRow = dataTable.Rows[0];
                    kq = dataRow["MAQUANHUYEN"].ToString();
                }
                return kq;
            }
            catch (OleDbException)
            {
                kq = "";
                return kq;
            }
            finally
            {
                connectionString.Close();
            }
        }
        // Hàm tìm kiếm dịch vụ theo mã quận và mã dịch vụ
        public void BindGridViewQuan(string maQuan, string maDichVu)
        {
            var dataTable = new DataTable();

            var connectionString = new OleDbConnection(GetConnectionString());

            try
            {
                connectionString.Open();

                var statement =
                    "SELECT DV.TENDICHVU, TDD.TENDIADIEM, DL.SONHA, D.TENDUONG, P.TENPHUONG FROM DULIEU DL, DICHVU DV, TENDIADIEM TDD, DUONG D, PHUONG P WHERE DL.MADICHVU = DV.MADICHVU AND DL.MATENDIADIEM = TDD.MATENDIADIEM AND DL.MADUONG = D.MADUONG AND DL.MAPHUONG = P.MAPHUONG AND DL.MAQUANHUYEN = " +
                    maQuan + "AND DL.MADICHVU = " + maDichVu;

                var command = new OleDbCommand(statement, connectionString);

                var dataAdapter = new OleDbDataAdapter(command);

                dataAdapter.Fill(dataTable);

                if (dataTable.Rows.Count > 0)
                {
                    GridView1.DataSource = dataTable;
                    GridView1.DataBind();
                }
            }
            catch (Exception ex)
            {
                var message = "Fetch Error:";

                message += ex.Message;

                throw new Exception(message);
            }
            finally
            {
                connectionString.Close();
            }
        }
        #endregion

        #region Tìm kiếm dịch vụ theo đường
        // Hàm tìm kiếm mã đường theo từ khóa
        private static string TimDuong(string tuKhoa)
        {
            var kq = "";
            var dataTable = new DataTable();
            var connectionString = new OleDbConnection(GetConnectionString());
            try
            {
                connectionString.Open();
                var statement = "SELECT MADUONG FROM TUKHOADUONG WHERE TUKHOADUONG ='" +
                                tuKhoa + "'";
                var command = new OleDbCommand(statement, connectionString);
                var dataAdapter = new OleDbDataAdapter(command);
                dataAdapter.Fill(dataTable);
                if (dataTable.Rows.Count > 0)
                {
                    var dataRow = dataTable.Rows[0];
                    kq = dataRow["MADUONG"].ToString();
                }
                return kq;
            }
            catch (OleDbException)
            {
                kq = "";
                return kq;
            }
            finally
            {
                connectionString.Close();
            }
        }
        // Hàm tìm kiếm dịch vụ theo mã đường và mã dịch vụ
        private void BindGridViewDuong(string maDuong, string maDichVu)
        {
            var dataTable = new DataTable();

            var connectionString = new OleDbConnection(GetConnectionString());

            try
            {
                connectionString.Open();

                var statement =
                    "SELECT DV.TENDICHVU, TDD.TENDIADIEM, DL.SONHA, D.TENDUONG, P.TENPHUONG, QH.TENQUANHUYEN FROM DULIEU DL, DICHVU DV, TENDIADIEM TDD, DUONG D, PHUONG P , QUANHUYEN QH WHERE DL.MADICHVU = DV.MADICHVU AND DL.MATENDIADIEM = TDD.MATENDIADIEM AND DL.MADUONG = D.MADUONG AND DL.MAPHUONG = P.MAPHUONG AND DL.MAQUANHUYEN = QH.MAQUANHUYEN AND D.MADUONG = " +
                    maDuong + "AND DL.MADICHVU = " + maDichVu;

                var command = new OleDbCommand(statement, connectionString);

                var dataAdapter = new OleDbDataAdapter(command);

                dataAdapter.Fill(dataTable);

                if (dataTable.Rows.Count > 0)
                {
                    GridView1.DataSource = dataTable;
                    GridView1.DataBind();
                }
            }
            catch (Exception ex)
            {
                var message = "Fetch Error:";

                message += ex.Message;

                throw new Exception(message);
            }
            finally
            {
                connectionString.Close();
            }
        }
        #endregion

        #region Tìm kiếm dịch vụ theo phường
        // Hàm tìm kiếm mã phường theo từ khóa
        private static string TimPhuong(string tuKhoa)
        {
            var kq = "";
            var dataTable = new DataTable();
            var connectionString = new OleDbConnection(GetConnectionString());
            try
            {
                connectionString.Open();
                var statement = "SELECT MAPHUONG FROM TUKHOAPHUONG WHERE TUKHOAPHUONG ='" +
                                tuKhoa + "'";
                var command = new OleDbCommand(statement, connectionString);
                var dataAdapter = new OleDbDataAdapter(command);
                dataAdapter.Fill(dataTable);
                if (dataTable.Rows.Count > 0)
                {
                    var dataRow = dataTable.Rows[0];
                    kq = dataRow["MAPHUONG"].ToString();
                }
                return kq;
            }
            catch (OleDbException)
            {
                kq = "";
                return kq;
            }
            finally
            {
                connectionString.Close();
            }
        }
        // Hàm tìm kiếm dịch vụ theo mã đường và mã dịch vụ
        private void BindGridViewPhuong(string maPhuong, string maDichVu)
        {
            var dataTable = new DataTable();

            var connectionString = new OleDbConnection(GetConnectionString());

            try
            {
                connectionString.Open();

                var statement =
                    "SELECT DV.TENDICHVU, TDD.TENDIADIEM, DL.SONHA, D.TENDUONG, P.TENPHUONG, QH.TENQUANHUYEN FROM DULIEU DL, DICHVU DV, TENDIADIEM TDD, DUONG D, PHUONG P , QUANHUYEN QH WHERE DL.MADICHVU = DV.MADICHVU AND DL.MATENDIADIEM = TDD.MATENDIADIEM AND DL.MADUONG = D.MADUONG AND DL.MAPHUONG = P.MAPHUONG AND DL.MAQUANHUYEN = QH.MAQUANHUYEN AND P.MAPHUONG = " +
                    maPhuong + "AND DL.MADICHVU = " + maDichVu;

                var command = new OleDbCommand(statement, connectionString);

                var dataAdapter = new OleDbDataAdapter(command);

                dataAdapter.Fill(dataTable);

                if (dataTable.Rows.Count > 0)
                {
                    GridView1.DataSource = dataTable;
                    GridView1.DataBind();
                }
            }
            catch (Exception ex)
            {
                var message = "Fetch Error:";

                message += ex.Message;

                throw new Exception(message);
            }
            finally
            {
                connectionString.Close();
            }
        }
        #endregion

        protected void Button1Click1(object sender, EventArgs e)
        {
            GridView1.DataSource = null;
            GridView1.DataBind();
            // Lấy mã dịch vụ
            _maDichVu = DropDownList1.SelectedValue;
            //---------------------------------------------------
            // Tìm kiếm quận theo từ khóa
            var temp = TextBox1.Text;
            var tuKhoa = temp.ToLower();
            _ketQuaQuan = TimQuan(tuKhoa);
            // Nếu tìm thấy quận : 
            if (!_ketQuaQuan.Equals(""))
            {
                // Thực hiện tìm kiếm dịch vụ trên quận đó
                BindGridViewQuan(_ketQuaQuan, _maDichVu);
            }
            //---------------------------------------------------
            _ketQuaDuong = TimDuong(tuKhoa);
            // Nếu tìm thấy đường :
            if (!_ketQuaDuong.Equals(""))
            {
                // Thực hiện tìm kiếm dịch vụ trên quận đó
                BindGridViewDuong(_ketQuaDuong, _maDichVu);
            }
            _ketQuaPhuong = TimPhuong(tuKhoa);
            // Nếu tìm thấy phường :
            if (!_ketQuaPhuong.Equals(""))
            {
                // Thực hiện tìm kiếm dịch vụ trên quận đó
                BindGridViewPhuong(_ketQuaPhuong, _maDichVu);
            }
        }

        protected void GridView1PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridView1.PageIndex = e.NewPageIndex;
        }

        protected void GridView1PageIndexChanged(object sender, EventArgs e)
        {
            if (!_ketQuaQuan.Equals(""))
            {
                BindGridViewQuan(_ketQuaQuan, _maDichVu);
            }
            if (!_ketQuaDuong.Equals(""))
            {
                BindGridViewDuong(_ketQuaDuong, _maDichVu);
            }
            if (!_ketQuaPhuong.Equals(""))
            {
                BindGridViewPhuong(_ketQuaPhuong, _maDichVu);
            }
        }
    }
}